package com.orange.singlePatterns;

/**
 * @Description:懒汉式单列
 * 核心想法就是，只有当用到这个单例的时候，才去创建它。
 * 可能会存在线程安全问题，当多个线程同时判断实列都是null时，可能会创建多个对象
 * 缺点：虽然解决了线程安全问题，但是由于getInstance()方法没有同步，所以在多线程情况下，还是有可能创建多个实例。
 * 优点：延迟加载，节省内存
 * @Author: orange
 */
public class LazeSingleton {
    private static LazeSingleton INSTANCE =null;

    //私有构造函数
    private LazeSingleton(){}


    //提供公共方法获取实例---这里要进行枷锁，如果没有锁，多线程情况下，可能会创建多个实例
    public synchronized static LazeSingleton getInstance(){
        if(INSTANCE == null){
            INSTANCE = new LazeSingleton();
        }
        return INSTANCE;
    }

}
